import LogFactory from "../log/LogFactory.js";
import RequestHandler from "../util/RequestHadler.js";
import GameDelegate from "./GameDelegate.js";
import ScoreForm from "./ScoreForm.js";
import Table from "./Table.js";
import ToastHandler from "./ToastHandler.js";
const log = LogFactory.getLogger("index");
const totalHandler = new ToastHandler();
const scoreForm = new ScoreForm();
const gameDelegate = new GameDelegate();
const table = new Table();


/**
 * 提交当前局成绩数据,唯一页面绑定方法,一切执行的开始
 * @param {*} event 
 */
const scoreCommitHandler = async (event) => {
    const data = scoreForm.getFormData();
    // log.debug("提交本局数据", data);
    if (!data) {
        log.warn("表单数据为空");
        return;
    }
    // 禁用表单避免重复提交
    scoreForm.formLoading();
    // 请求服务器添加数据
    const resData = await RequestHandler.put("/scoring", data);
    // log.debug("添加数据反回结果: " , resData);
    // 结束表单的加载事件
    scoreForm.formRelieveLoading();
    // 刷新最后一次成绩单
    // lastReport.refresh();
    gameDelegate.refreshPage();
    // 发送消息提醒
    totalHandler.show(resData);
    table.refreshTable();
}


const clearAllGameData = async () => {
    // 清除游戏数据
    log.debug("清空全部游戏数据");
    await RequestHandler.get("/scoring/clear-all-data");
    window.alert("游戏数据已经全部删除, 点击确认重新开始游戏");
    window.location.reload();
}

// 全局初始化方法
const init = async () => {
    // log.debug("文档准备就绪,执行初始化操作");
    // 游戏委托器初始化,scoreForm需要初始化的组件必须有init方法
    await gameDelegate.init(scoreForm);
    // 注册事件 
    $("#scoreCommitButton").on("click", scoreCommitHandler);
    $("#clearAllData").on("click",clearAllGameData)
    // 初始化全局消息
    totalHandler.init();
    await table.init();
    await table.refreshTable();
}

$(document).ready(init);





